#include "mempool.h"

// 示例用法
int main() 
{
    // 1. 创建内存池
    MemoryPool* pool = MemPoolCreate();
    if (!pool) 
    {
        printf("内存池创建失败\n");
        return 1;
    }

    // 2. 分配不同大小的内存
    void* p1 = MemPoolAlloc(pool, 128);   // 小内存
    void* p2 = MemPoolAlloc(pool, 2048);  // 中等内存
    void* p3 = MemPoolAlloc(pool, 10000); // 大内存（超过一页）
    printf("分配地址: p1=%p, p2=%p, p3=%p\n", p1, p2, p3);

    // 3. 释放p2并复用
    if (MemPoolFree(pool, p2) == 0) 
    {
        void* p4 = MemPoolAlloc(pool, 1024); // 复用p2释放的空间
        printf("复用地址: p4=%p（应与p2接近）\n", p4);
        MemPoolFree(pool, p4);
    }

    // 4. 释放剩余内存
    MemPoolFree(pool, p1);
    MemPoolFree(pool, p3);

    // 5. 销毁内存池
    if (MemPoolDestroy(pool)) 
    {
        printf("内存池销毁成功\n");
    }

    return 0;
}